package pe.gob.mimp.model;

import java.io.Serializable;
import java.sql.Blob;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name = "CASO_SOCIAL")
@NamedQueries({
    @NamedQuery(name = "CasoSocial.findAll", query = "SELECT c FROM CasoSocial c")})
public class CasoSocial implements Serializable {
    private static final long serialVersionUID = 1L;    
    @Id
    @Basic(optional = false)
    @Column(name = "ID_CASOSOCIAL")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MYENTITY_SEQ")
    @SequenceGenerator(name = "MYENTITY_SEQ", sequenceName = "CASO_SOCIAL_SEQ", allocationSize = 1)
    private Long idCasosocial;
    @Column(name = "FECHA_REGISTRO")
    @Temporal(TemporalType.DATE)
    private Date fechaRegistro;
    @Column(name = "EXPEDIENTE")
    private String expediente;
    @Column(name = "DES_MOTIVO")
    private String desMotivo;
    @Column(name = "RESULTADO")
    private String resultado;
    @Column(name = "ID_MOTIVO")
    private Long idMotivo;
    @Column(name = "ID_MEDIO")
    private Long idMedio;
    @Column(name = "ID_TIPOCASO")
    private Long idTipocaso;
    @Column(name = "ID_ESTADO")
    private Long idEstado;
    @JoinColumn(name = "ID_SOLICITANTE", referencedColumnName = "ID_PERSONA")
    @ManyToOne
    private Persona idSolicitante;
    @Column(name = "ID_RESPONSABLE")
    private Long idResponsable;
    @JoinColumn(name = "ID_BENEFICIARIO", referencedColumnName = "ID_PERSONA")
    @ManyToOne
    private Persona idBeneficiario;
    @OneToMany(mappedBy = "idCasosocial")
    private List<Seguimiento> seguimientoList;
    @OneToMany(mappedBy = "idCasosocial")
    private List<Derivacion> derivacionList;
    @Transient
    private String bfechaNacimiento;
    @Transient
    private Long bidDepartamento;
    @Transient
	private Long bidProvincia;
    @Transient
	private String fechaNacimiento;
	@Transient
    private Long idDepartamento;
    @Transient
	private Long idProvincia;
    @Transient
	private String fechaRegistroCaso;
    @Column(name = "DOCUMENTO")
    private byte[] documento;
    @Column(name="CONTENT_TYPE")
    private String contentType;
    @Column(name="ARCHIVO")
    private String archivo;
    @Column(name="INSTI_REMITENTE")
    private String institucion;
    @Column(name="TIPO_EXPEDIENTE")
    private String tipo_expediente;

    public String getTipo_expediente() {
        return tipo_expediente;
    }

    public void setTipo_expediente(String tipo_expediente) {
        this.tipo_expediente = tipo_expediente;
    }
	
    
    public String getFechaRegistroCaso() {
		return fechaRegistroCaso;
	}

	public void setFechaRegistroCaso(String fechaRegistroCaso) {
		this.fechaRegistroCaso = fechaRegistroCaso;
	}

	public String getBfechaNacimiento() {
		return bfechaNacimiento;
	}

	public void setBfechaNacimiento(String bfechaNacimiento) {
		this.bfechaNacimiento = bfechaNacimiento;
	}

	public String getFechaNacimiento() {
		return fechaNacimiento;
	}

	public void setFechaNacimiento(String fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}

	public Long getBidDepartamento() {
		return bidDepartamento;
	}

	public void setBidDepartamento(Long bidDepartamento) {
		this.bidDepartamento = bidDepartamento;
	}

	public Long getBidProvincia() {
		return bidProvincia;
	}

	public void setBidProvincia(Long bidProvincia) {
		this.bidProvincia = bidProvincia;
	}

	public Long getIdDepartamento() {
		return idDepartamento;
	}

	public void setIdDepartamento(Long idDepartamento) {
		this.idDepartamento = idDepartamento;
	}

	public Long getIdProvincia() {
		return idProvincia;
	}

	public void setIdProvincia(Long idProvincia) {
		this.idProvincia = idProvincia;
	}
	
    public CasoSocial() {
    }

    public CasoSocial(Long idCasosocial) {
        this.idCasosocial = idCasosocial;
    }

    public Long getIdCasosocial() {
        return idCasosocial;
    }

    public void setIdCasosocial(Long idCasosocial) {
        this.idCasosocial = idCasosocial;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public String getExpediente() {
        return expediente;
    }

    public void setExpediente(String expediente) {
        this.expediente = expediente;
    }

    public String getDesMotivo() {
        return desMotivo;
    }

    public void setDesMotivo(String desMotivo) {
        this.desMotivo = desMotivo;
    }

    public String getResultado() {
        return resultado;
    }

    public void setResultado(String resultado) {
        this.resultado = resultado;
    }

    public Long getIdMotivo() {
        return idMotivo;
    }

    public void setIdMotivo(Long idMotivo) {
        this.idMotivo = idMotivo;
    }

    public Long getIdMedio() {
        return idMedio;
    }

    public void setIdMedio(Long idMedio) {
        this.idMedio = idMedio;
    }

    public Long getIdTipocaso() {
        return idTipocaso;
    }

    public void setIdTipocaso(Long idTipocaso) {
        this.idTipocaso = idTipocaso;
    }

    public Persona getIdSolicitante() {
        return idSolicitante;
    }

    public void setIdSolicitante(Persona idSolicitante) {
        this.idSolicitante = idSolicitante;
    }

    public Long getIdResponsable() {
        return idResponsable;
    }

    public void setIdResponsable(Long idResponsable) {
        this.idResponsable = idResponsable;
    }

    public Persona getIdBeneficiario() {
        return idBeneficiario;
    }

    public void setIdBeneficiario(Persona idBeneficiario) {
        this.idBeneficiario = idBeneficiario;
    }

    public List<Seguimiento> getSeguimientoList() {
        return seguimientoList;
    }

    public void setSeguimientoList(List<Seguimiento> seguimientoList) {
        this.seguimientoList = seguimientoList;
    }

    public List<Derivacion> getDerivacionList() {
        return derivacionList;
    }

    public void setDerivacionList(List<Derivacion> derivacionList) {
        this.derivacionList = derivacionList;
    }

    public Long getIdEstado() {
        return idEstado;
    }

    public void setIdEstado(Long idEstado) {
        this.idEstado = idEstado;
    }

    public String getContentType() {
        return contentType;
    }

    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    public byte[] getDocumento() {
        return documento;
    }

    public void setDocumento(byte[] documento) {
        this.documento = documento;
    }

    public String getArchivo() {
        return archivo;
    }

    public void setArchivo(String archivo) {
        this.archivo = archivo;
    }

    public String getInstitucion() {
        return institucion;
    }

    public void setInstitucion(String institucion) {
        this.institucion = institucion;
    }
    
    
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idCasosocial != null ? idCasosocial.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CasoSocial)) {
            return false;
        }
        CasoSocial other = (CasoSocial) object;
        if ((this.idCasosocial == null && other.idCasosocial != null) || (this.idCasosocial != null && !this.idCasosocial.equals(other.idCasosocial))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.gob.mimp.model.CasoSocial[ idCasosocial=" + idCasosocial + " ]";
    }
    
}
